/**
 * 分页控件函数. <br>
 * Create by LaiHongbo on 2015-07-22.
 */
function PageCtrl () {
    return {
        // 初始化及分页.
        page: function (pagerObj, dataCount, pageNo) {
            pagerObj = {
                sizeList: pagerObj.sizeList || [2, 20, 30, 50, 100, 200],
                count: pagerObj.count || 2,
                pageSize: pagerObj.pageSize || 10,
                // pageSize : 15,
                currentPage: pagerObj.currentPage || 1,
                button: pagerObj.button || 5
            };
            if (pageNo != undefined && pageNo != null) {
                pagerObj.currentPage = pageNo;
            }
            // 计算页数.
            pagerObj.count = dataCount;
            var maxPage = Math.floor((pagerObj.count + pagerObj.pageSize - 1) / pagerObj.pageSize);
            pagerObj.maxPage = maxPage;
            // 如果改变了页大小, 当前页有可能超出最大页码范围.
            if (pagerObj.currentPage > maxPage) {
                pagerObj.currentPage = maxPage;
            }
            if (pagerObj.currentPage < 1) {
                pagerObj.currentPage = 1;
            }
            // 计算当前页的起始/结束索引.
            pagerObj.first = (pagerObj.currentPage - 1) * pagerObj.pageSize + 1;
            pagerObj.last = pagerObj.first + pagerObj.pageSize - 1;
            if (pagerObj.last > pagerObj.count) {
                pagerObj.last = pagerObj.count;
            }
            // 计算需要显示的分页按钮数, 从中间往两边推.
            var from = 1, button = maxPage;
            if (button > pagerObj.button) {
                button = pagerObj.button;
                // 超过按钮数, 才需要计算.
                if (pagerObj.currentPage > Math.floor(pagerObj.button / 2) + 1) {
                    from = pagerObj.currentPage - Math.floor(pagerObj.button / 2);
                    button = from + pagerObj.button - 1;
                    if (button > maxPage) {
                        button = maxPage;
                        from = button - pagerObj.button + 1;
                    }
                }
            }
            pagerObj.pageArr = [];
            while (from <= button) {
                pagerObj.pageArr.push(from++);
            }
            return pagerObj;
        },
        // 检查范围.
        check: function (pagerObj) {
            if (pagerObj.currentPage < 1) {
                pagerObj.currentPage = 1;
            }
            if (pagerObj.currentPage > pagerObj.maxPage) {
                pagerObj.currentPage = pagerObj.maxPage;
            }
        }
    };
}
